#ifndef __UBT_TASK_MANAGER_H__
#define __UBT_TASK_MANAGER_H__

#include <jsoncpp/json/json.h>
#include <string>

#include "ubt_yaml_config.h"
#include "config.h"
#include "map_manager.h"
#include <ubt_mqtt/node.h> 

namespace ubt
{

class CTaskManager
{
private:
    std::string _RequsetId;

    task_info_t _taskInfo;

    std::shared_ptr<CMapManager> _mapManagerStr;

    /**
     * @brief 保存实时路径
     * @param paths : 实时路径组 [{...}, {...}]
     * @return true
     * @return false
     */
    bool SaveRealPath(Json::Value& paths);

public:
    CTaskManager(std::shared_ptr<CMapManager> ptr);
    ~CTaskManager();

    /**
     * @brief 更新task信息
     * @param taskJson ：{
            "task_id":＂＂ ,  #任务ID @param str(task_id)
            "task_name":＂＂, #任务名称 @param str(task_name)
            "task_code":＂＂, #任务编码 @param str(task_code)
        }
     */
    bool UpdateTaskInfo(const Json::Value& taskJson);

    /**
     * @brief 处理实时任务数据
     * @param data :任务数据
     * @param notify_callback: 通知数据发布
     * @return true
     * @return false
     */
    bool HandleRealTaskData(const Json::Value& data, const std::function<void(const std::string &state)> &notify_callback);

    const std::string& GetRequsetId() { return _RequsetId;}
    const task_info_t& GetTaskInfo() { return _taskInfo; }
};

} //namespace ubt

#endif // !__UBT_TASK_MANAGER_H__

